﻿#pragma once

#include "../../Server/MirEnvir/Envir.h"
#include "../../Server/MirDatabase/NPCInfo.h"
#include "../../Server/MirEnvir/Map.h"
#include <string>
#include <vector>
#include <algorithm>
#include <stdexcept>
#include "../../stringhelper.h"

//C# TO C++ CONVERTER NOTE: Forward class declarations:
namespace Server::MirForms { class NPCInfo; }
namespace Server::MirForms { class MonGenInfo; }

using namespace Server::MirDatabase;
using namespace Server::MirEnvir;

namespace Server::MirForms
{
    class ConvertMapInfo final
    {
    public:
        static Envir *EditEnvir;

    private:
        static int _endIndex;
    public:
        static std::string Path;

    private:
        static std::vector<std::string> errors;

    public:
        static void Start(Envir *envirToUpdate);
        static void End();
    };

    class ConvertNPCInfo final
    {
    public:
        static std::vector<NPCInfo*> NPCInfoList;

        static void Start();

        static void Stop();
    };

    class NPCInfo
    {
    public:
        std::string FileName = std::string::Empty, Map = "0", Title = std::string::Empty;

        int Index = 0, X = 0, Y = 0, Image = 0, Rate = 100;
    };


    class ConvertMonGenInfo final
    {
    public:
        static std::vector<MonGenInfo*> monGenList;

        static void Start();

        static void Stop();
    };

    class MonGenInfo
    {
    public:
        std::string Map = std::string::Empty, Name = std::string::Empty;

        int X = 0, Y = 0, Range = 0, Count = 0, Delay = 0, Direction = 0;
    };
}
